package com.nebula.salary.portal.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nebula.salary.model.dto.WorkOvertimeDto;
import com.nebula.salary.model.pojo.WorkOvertime;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nebula.salary.model.vo.WorkOvertimeVo;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;

/**
 * <p>
 * 加班记录表 Mapper 接口
 * </p>
 *
 * @author codex
 * @since 2022-06-09
 */
public interface WorkOvertimeMapper extends BaseMapper<WorkOvertime> {

    /**
     * 分页查询
     *
     * @param page         分页
     * @param workOvertime
     * @return
     */
    IPage<WorkOvertimeVo> selectByPage(Page<WorkOvertimeVo> page, @Param("workOvertime") WorkOvertimeDto workOvertime);

    /**
     * 根据时间范围查询加班总天数
     *
     * @param workOvertime 查询条件
     * @return 加班总天数
     */
    BigDecimal getTotalWorkOvertimeDays(@Param("workOvertime") WorkOvertimeDto workOvertime);

    /**
     * 今年加班数
     *
     * @param year   年份
     * @param userId 用户id
     * @return 今年加班数
     */
    BigDecimal getYearCount(@Param("year") Integer year, @Param("userId") Long userId);

    /**
     * 获取当前用户的加班记录编号数组
     *
     * @param userId 用户ID
     * @return 记录编号数组
     */
    Integer[] getIdsByUserId(Long userId);
}
